FALSE Registered S3 methods overwritten by 'dbplyr':
FALSE   method         from
FALSE   print.tbl_lazy     
FALSE   print.tbl_sql      
FALSE -- Attaching packages ----------------------------------------------------------------------- tidyverse 1.3.1 --
FALSE √ ggplot2 3.3.5     √ purrr   0.3.4
FALSE √ tibble  3.1.6     √ dplyr   1.0.8
FALSE √ tidyr   1.2.0     √ stringr 1.4.0
FALSE √ readr   2.1.2     √ forcats 0.5.1
FALSE -- Conflicts -------------------------------------------------------------------------- tidyverse_conflicts() --
FALSE x dplyr::filter() masks stats::filter()
FALSE x dplyr::lag()    masks stats::lag()
FALSE 
FALSE Attaching package: ‘scales’
FALSE 
FALSE The following object is masked from ‘package:purrr’:
FALSE 
FALSE     discard
FALSE 
FALSE The following object is masked from ‘package:readr’:
FALSE 
FALSE     col_factor
FALSE 
FALSE Registered S3 method overwritten by 'data.table':
FALSE   method           from
FALSE   print.data.table     
FALSE Registered S3 method overwritten by 'htmlwidgets':
FALSE   method           from         
FALSE   print.htmlwidget tools:rstudio
FALSE 
FALSE Attaching package: ‘plotly’
FALSE 
FALSE The following object is masked from ‘package:ggplot2’:
FALSE 
FALSE     last_plot
FALSE 
FALSE The following object is masked from ‘package:stats’:
FALSE 
FALSE     filter
FALSE 
FALSE The following object is masked from ‘package:graphics’:
FALSE 
FALSE     layout
FALSE 
FALSE data.table 1.14.2 using 8 threads (see ?getDTthreads).  Latest news: r-datatable.com
FALSE 
FALSE Attaching package: ‘data.table’
FALSE 
FALSE The following objects are masked from ‘package:dplyr’:
FALSE 
FALSE     between, first, last
FALSE 
FALSE The following object is masked from ‘package:purrr’:
FALSE 
FALSE     transpose
FALSE 
FALSE 
FALSE Attaching package: ‘lubridate’
FALSE 
FALSE The following objects are masked from ‘package:data.table’:
FALSE 
FALSE     hour, isoweek, mday, minute, month, quarter, second, wday, week, yday, year
FALSE 
FALSE The following objects are masked from ‘package:base’:
FALSE 
FALSE     date, intersect, setdiff, union
FALSE 
FALSE Loading required package: kableExtra
FALSE 
FALSE Attaching package: ‘kableExtra’
FALSE 
FALSE The following object is masked from ‘package:dplyr’:
FALSE 
FALSE     group_rows
FALSE 
FALSE 
FALSE Attaching package: ‘timetk’
FALSE 
FALSE The following object is masked from ‘package:data.table’:
FALSE 
FALSE     :=
FALSE 
FALSE Loading required package: svd
FALSE Loading required package: forecast
FALSE Registered S3 method overwritten by 'quantmod':
FALSE   method            from
FALSE   as.zoo.data.frame zoo 
FALSE 
FALSE Attaching package: ‘Rssa’
FALSE 
FALSE The following object is masked from ‘package:stats’:
FALSE 
FALSE     decompose
Warning: `funs()` was deprecated in dplyr 0.8.0.
Please use a list of either functions or lambdas: 

  # Simple named list: 
  list(mean = mean, median = median)

  # Auto named with `tibble::lst()`: 
  tibble::lst(mean, median)

  # Using lambdas
  list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
Warning: Removed 397 row(s) containing missing values (geom_path).

Warning: Width not defined. Set with `position_dodge(width = ?)`
Warning in max(ids, na.rm = TRUE) :
  no non-missing arguments to max; returning -Inf
Warning: Removed 8 row(s) containing missing values (geom_path).

Warning: Width not defined. Set with `position_dodge(width = ?)`
Warning in max(ids, na.rm = TRUE) :
  no non-missing arguments to max; returning -Inf
Warning: Removed 203 row(s) containing missing values (geom_path).

Warning: Width not defined. Set with `position_dodge(width = ?)`
Warning in max(ids, na.rm = TRUE) :
  no non-missing arguments to max; returning -Inf
Warning: Removed 46 row(s) containing missing values (geom_path).

Time Series Analysis

Warning: `gather_()` was deprecated in tidyr 1.2.0.
Please use `gather()` instead.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
Max lag exceeds data available. Using max lag: 72
Max lag exceeds data available. Using max lag: 74
Max lag exceeds data available. Using max lag: 21
Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1; sf_use_s2() is TRUE
[1] "sf"         "data.frame"
  [1] "Afghanistan"                      "Africa"                           "Albania"                         
  [4] "Algeria"                          "Andorra"                          "Angola"                          
  [7] "Anguilla"                         "Antigua and Barbuda"              "Argentina"                       
 [10] "Armenia"                          "Aruba"                            "Asia"                            
 [13] "Australia"                        "Austria"                          "Azerbaijan"                      
 [16] "Bahamas"                          "Bahrain"                          "Bangladesh"                      
 [19] "Barbados"                         "Belarus"                          "Belgium"                         
 [22] "Belize"                           "Benin"                            "Bermuda"                         
 [25] "Bhutan"                           "Bolivia"                          "Bonaire Sint Eustatius and Saba" 
 [28] "Bosnia and Herzegovina"           "Botswana"                         "Brazil"                          
 [31] "British Virgin Islands"           "Brunei"                           "Bulgaria"                        
 [34] "Burkina Faso"                     "Burundi"                          "Cambodia"                        
 [37] "Cameroon"                         "Canada"                           "Cape Verde"                      
 [40] "Cayman Islands"                   "Central African Republic"         "Chad"                            
 [43] "Chile"                            "China"                            "Colombia"                        
 [46] "Comoros"                          "Congo"                            "Cook Islands"                    
 [49] "Costa Rica"                       "Cote d'Ivoire"                    "Croatia"                         
 [52] "Cuba"                             "Curacao"                          "Cyprus"                          
 [55] "Czechia"                          "Democratic Republic of Congo"     "Denmark"                         
 [58] "Djibouti"                         "Dominica"                         "Dominican Republic"              
 [61] "Ecuador"                          "Egypt"                            "El Salvador"                     
 [64] "Equatorial Guinea"                "Eritrea"                          "Estonia"                         
 [67] "Eswatini"                         "Ethiopia"                         "Europe"                          
 [70] "European Union"                   "Faeroe Islands"                   "Falkland Islands"                
 [73] "Fiji"                             "Finland"                          "France"                          
 [76] "French Polynesia"                 "Gabon"                            "Gambia"                          
 [79] "Georgia"                          "Germany"                          "Ghana"                           
 [82] "Gibraltar"                        "Greece"                           "Greenland"                       
 [85] "Grenada"                          "Guam"                             "Guatemala"                       
 [88] "Guernsey"                         "Guinea"                           "Guinea-Bissau"                   
 [91] "Guyana"                           "Haiti"                            "High income"                     
 [94] "Honduras"                         "Hong Kong"                        "Hungary"                         
 [97] "Iceland"                          "India"                            "Indonesia"                       
[100] "International"                    "Iran"                             "Iraq"                            
[103] "Ireland"                          "Isle of Man"                      "Israel"                          
[106] "Italy"                            "Jamaica"                          "Japan"                           
[109] "Jersey"                           "Jordan"                           "Kazakhstan"                      
[112] "Kenya"                            "Kiribati"                         "Kosovo"                          
[115] "Kuwait"                           "Kyrgyzstan"                       "Laos"                            
[118] "Latvia"                           "Lebanon"                          "Lesotho"                         
[121] "Liberia"                          "Libya"                            "Liechtenstein"                   
[124] "Lithuania"                        "Low income"                       "Lower middle income"             
[127] "Luxembourg"                       "Macao"                            "Madagascar"                      
[130] "Malawi"                           "Malaysia"                         "Maldives"                        
[133] "Mali"                             "Malta"                            "Marshall Islands"                
[136] "Mauritania"                       "Mauritius"                        "Mexico"                          
[139] "Micronesia (country)"             "Moldova"                          "Monaco"                          
[142] "Mongolia"                         "Montenegro"                       "Montserrat"                      
[145] "Morocco"                          "Mozambique"                       "Myanmar"                         
[148] "Namibia"                          "Nauru"                            "Nepal"                           
[151] "Netherlands"                      "New Caledonia"                    "New Zealand"                     
[154] "Nicaragua"                        "Niger"                            "Nigeria"                         
[157] "Niue"                             "North America"                    "North Macedonia"                 
[160] "Northern Cyprus"                  "Northern Mariana Islands"         "Norway"                          
[163] "Oceania"                          "Oman"                             "Pakistan"                        
[166] "Palau"                            "Palestine"                        "Panama"                          
[169] "Papua New Guinea"                 "Paraguay"                         "Peru"                            
[172] "Philippines"                      "Pitcairn"                         "Poland"                          
[175] "Portugal"                         "Puerto Rico"                      "Qatar"                           
[178] "Romania"                          "Russia"                           "Rwanda"                          
[181] "Saint Helena"                     "Saint Kitts and Nevis"            "Saint Lucia"                     
[184] "Saint Pierre and Miquelon"        "Saint Vincent and the Grenadines" "Samoa"                           
[187] "San Marino"                       "Sao Tome and Principe"            "Saudi Arabia"                    
[190] "Senegal"                          "Serbia"                           "Seychelles"                      
[193] "Sierra Leone"                     "Singapore"                        "Sint Maarten (Dutch part)"       
[196] "Slovakia"                         "Slovenia"                         "Solomon Islands"                 
[199] "Somalia"                          "South Africa"                     "South America"                   
[202] "South Korea"                      "South Sudan"                      "Spain"                           
[205] "Sri Lanka"                        "Sudan"                            "Suriname"                        
[208] "Sweden"                           "Switzerland"                      "Syria"                           
[211] "Taiwan"                           "Tajikistan"                       "Tanzania"                        
[214] "Thailand"                         "Timor"                            "Togo"                            
[217] "Tokelau"                          "Tonga"                            "Trinidad and Tobago"             
[220] "Tunisia"                          "Turkey"                           "Turkmenistan"                    
[223] "Turks and Caicos Islands"         "Tuvalu"                           "Uganda"                          
[226] "Ukraine"                          "United Arab Emirates"             "United Kingdom"                  
[229] "United States"                    "United States Virgin Islands"     "Upper middle income"             
[232] "Uruguay"                          "Uzbekistan"                       "Vanuatu"                         
[235] "Vatican"                          "Venezuela"                        "Vietnam"                         
[238] "Wallis and Futuna"                "World"                            "Yemen"                           
[241] "Zambia"                           "Zimbabwe"                        
`summarise()` has grouped output by 'Country'. You can override using the `.groups` argument.
Error: cannot allocate vector of size 421.3 Mb

LS0tDQp0aXRsZTogIkNPVklELTE5IFZhcmlhbnRzIEFuYWx5c2lzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3IsIGluY2x1ZGUgPSBGQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCmBgYA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBjb21tZW50PUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShEVCkNCmxpYnJhcnkoZGF0YS50YWJsZSkNCmxpYnJhcnkoZ3RhYmxlKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkodnRhYmxlKQ0KbGlicmFyeShyanNvbikNCmxpYnJhcnkodGltZXRrKQ0KbGlicmFyeShSc3NhKQ0KYGBgDQoNCmBgYHtyLCBlY2hvID0gRkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpjb3ZpZCA8LSByZWFkX2NzdigiZGF0YS9vd2lkLWNvdmlkLWRhdGEuY3N2IixzaG93X2NvbF90eXBlcyA9IEZBTFNFKQ0KI3ZhcmlhbnRzIDwtIHJlYWRfY3N2KCJkYXRhL2NvdmlkLXZhcmlhbnRzLmNzdiIsc2hvd19jb2xfdHlwZXMgPSBGQUxTRSkNCg0KZ2lzYWlkIDwtIGFzLmRhdGEuZnJhbWUoZnJlYWQoImRhdGEvZ2lzYWlkX3ZhcmlhbnRzX3N0YXRpc3RpY3MudHN2IikpICU+JSANCiAgcmVuYW1lKGRhdGUgPSBgV2VlayBwcmlvciB0b2AsDQogICAgICAgICBjb3VudCA9IGBTdWJtaXNzaW9uIENvdW50YCwNCiAgICAgICAgIHBlcmNfc2VxdWVuY2VzID0gYCUgcGVyIENvdW50cnkgYW5kIFdlZWtgLA0KICAgICAgICAgdG90YWwgPSBgVG90YWwgcGVyIENvdW50cnkgYW5kIFdlZWtgLA0KICAgICAgICAgdmFyaWFudCA9IFZhbHVlKSAlPiUgDQogIG11dGF0ZShkYXRlID0geW1kKGRhdGUpLA0KICAgICAgICAgcGVyY19zZXF1ZW5jZXMgPSByb3VuZChjb3VudCAvIHRvdGFsICogMTAwLCAzKSkjICU+JSANCiMgIHNlcGFyYXRlKHZhcmlhbnQsIGludG8gPSBjKCJ2YXJpYW50IiwgIm9yaWdpbiIpLCBzZXAgPSBjKCJmaXJzdCBkZXRlY3RlZCBpbiAiKSkNCg0KZ2lzYWlkX3ZhcmlhbnRzIDwtIGdpc2FpZCAlPiUgDQogIGZpbHRlcihUeXBlID09ICJWYXJpYW50IikgJT4lDQogIHNlcGFyYXRlKHZhcmlhbnQsIGMoInZhcmlhbnQiLCAib3JpZ2luIiksIHNlcCA9ICJmaXJzdCBkZXRlY3RlZCBpbiAiKSAlPiUgDQogIHNlbGVjdCgtVHlwZSkNCmBgYA0KDQpgYGB7cn0NCmNvdmlkX05BcyA8LSBjb3ZpZCAlPiUgDQogIGdyb3VwX2J5KGxvY2F0aW9uKSAlPiUgDQogIHN1bW1hcmlzZV9hbGwoZnVucyhzdW0oaXMubmEoLikpKSkgJT4lIA0KICBwaXZvdF9sb25nZXIoY29scyA9IC1sb2NhdGlvbiwgbmFtZXNfdG8gPSAiVmFyaWFibGUiLCB2YWx1ZXNfdG8gPSAiTkFzIikgJT4lIA0KICBtdXRhdGUoUGVyY2VudCA9IHJvdW5kKE5BcyAvIG5yb3coY292aWQpICogMTAwICwyKSkgJT4lIA0KICBhcnJhbmdlKC1OQXMpDQpgYGANCg0KYGBge3J9DQpjb3ZpZF9OQXMgJT4lIA0KICBncm91cF9ieShsb2NhdGlvbikgJT4lIA0KICBzdW1tYXJpc2UodG90YWxfcGN0X25hID0gc3VtKFBlcmNlbnQpKSAlPiUgDQogIGFycmFuZ2UodG90YWxfcGN0X25hKSAlPiUgDQogIGRhdGF0YWJsZShmaWx0ZXIgPSAndG9wJykNCmBgYA0KDQpgYGB7cn0NCiNIZWxwZXIgZnVuY3Rpb24gZm9yIGZpbHRlcmluZyBkYXRhDQpteV9kYXRhIDwtIGZ1bmN0aW9uKGNvdW50cnlfY292aWRfZmlsdGVyLCBjb3VudHJ5X2dpc2FpZF9maWx0ZXIpew0KICBkYXRhIDwtIGNvdmlkICU+JSANCiAgICBmaWx0ZXIobG9jYXRpb24gPT0gY291bnRyeV9jb3ZpZF9maWx0ZXIpDQogIGdpc2FpZF9kYXRhIDwtIGdpc2FpZF92YXJpYW50cyAlPiUgDQogICAgZmlsdGVyKENvdW50cnkgPT0gY291bnRyeV9naXNhaWRfZmlsdGVyKQ0KICBkYXRhIDwtIGxlZnRfam9pbihkYXRhLCBnaXNhaWRfZGF0YSwgYnkgPSAiZGF0ZSIpDQogIGRhdGENCn0NCg0KdXMgPC0gbXlfZGF0YSgiVW5pdGVkIFN0YXRlcyIsICJVU0EiKQ0KYGBgDQoNCg0KYGBge3IgIlVTIFBsb3RzIn0NCnZhcmlhbnRzX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSB1cywgYWVzKHggPSBkYXRlKSkgKw0KICBnZW9tX2FyZWEoYWVzKHkgPSBwZXJjX3NlcXVlbmNlcywgY29sb3IgPSB2YXJpYW50LCBmaWxsID0gdmFyaWFudCksIHBvc2l0aW9uID0gImRvZGdlIiwgc2hvdy5sZWdlbmQgPSBGQUxTRSkgKw0KICB0aGVtZV9taW5pbWFsKCkNCg0KDQpjYXNlc19wbG90IDwtDQogIGdncGxvdChkYXRhID0gdXMsIGFlcyh4ID0gZGF0ZSkpICsNCiAgZ2VvbV9saW5lKGFlcyh5ID0gbmV3X2Nhc2VzX3Blcl9taWxsaW9uKSwgc2hvdy5sZWdlbmQgPSBGQUxTRSkgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBuZXdfZGVhdGhzX3Blcl9taWxsaW9uKSkgKyANCiAgdGhlbWVfbWluaW1hbCgpDQoNCg0KZGVhdGhzX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSB1cywgYWVzKHggPSBkYXRlKSkgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBuZXdfZGVhdGhzX3Blcl9taWxsaW9uKSkgKyANCiAgdGhlbWVfbWluaW1hbCgpDQoNCg0KdmFjY2luYXRpb25zX3Bsb3QgPC0gZ2dwbG90KHVzLCBhZXMoeCA9IGRhdGUpKSArDQogIGdlb21fbGluZShhZXMoeSA9IG5ld192YWNjaW5hdGlvbnNfc21vb3RoZWRfcGVyX21pbGxpb24pKSArDQogIHRoZW1lX21pbmltYWwoKQ0KDQoNCnZhcmlhbnRzX2Nhc2VzX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSB1cywgYWVzKHggPSBkYXRlKSkgKyANCiAgZ2VvbV9hcmVhKGFlcyh5ID0gcGVyY19zZXF1ZW5jZXMsIGNvbG9yID0gdmFyaWFudCwgZmlsbCA9IHZhcmlhbnQpLCBzaG93LmxlZ2VuZCA9RkFMU0UsIGFscGhhID0gMC41LCBwb3NpdGlvbiA9ICJkb2RnZSIpICsgDQogIGdlb21fbGluZShhZXMoeSA9IG5ld19jYXNlc19zbW9vdGhlZF9wZXJfbWlsbGlvbiAvIDQwKSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJQZXJjZW50IG9mIFNlcXVlbmNlcyIsIHNlYy5heGlzPXNlY19heGlzKH4uKjQwLCBuYW1lID0gIk5ldyBDYXNlcyBQZXIgTWlsbGlvbiIpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgbGFicyh0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIENvdmlkIFZhcmlhbnRzIHZzIE5ldyBDYXNlcyBQZXIgTWlsbGlvbiIpICArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMDA3MDEpLCB5PTc1LCBsYWJlbD0iQWxwaGEvT3RoZXIiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMTA5MDEpLCB5PTc1LCBsYWJlbD0iRGVsdGEiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMjAyMDEpLCB5PTc1LCBsYWJlbD0iT21pY3JvbiIpDQoNCg0KdmFyaWFudHNfZGVhdGhzX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSB1cywgYWVzKHggPSBkYXRlKSkgKyANCiAgZ2VvbV9hcmVhKGFlcyh5ID0gcGVyY19zZXF1ZW5jZXMsIGNvbG9yID0gdmFyaWFudCwgZmlsbCA9IHZhcmlhbnQpLHNob3cubGVnZW5kID1GQUxTRSwgYWxwaGEgPSAwLjUsIHBvc2l0aW9uID0gImRvZGdlIikgKyANCiAgZ2VvbV9saW5lKGFlcyh5ID0gbmV3X2RlYXRoc19zbW9vdGhlZF9wZXJfbWlsbGlvbio1KSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJQZXJjZW50IG9mIFNlcXVlbmNlcyIsIHNlYy5heGlzPXNlY19heGlzKH4uLzUsIG5hbWUgPSAiTmV3IERlYXRocyBQZXIgTWlsbGlvbiIpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgbGFicyh0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIENvdmlkIFZhcmlhbnRzIHZzIE5ldyBEZWF0aHMgUGVyIE1pbGxpb24iKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMDA3MDEpLCB5PTc1LCBsYWJlbD0iQWxwaGEvT3RoZXIiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMTA5MDEpLCB5PTc1LCBsYWJlbD0iRGVsdGEiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMjAyMDEpLCB5PTc1LCBsYWJlbD0iT21pY3JvbiIpDQoNCg0KY2FzZXNfdmFjY2luYXRpb25zX3Bsb3QgPC0gZ2dwbG90KGRhdGEgPSB1cywgYWVzKHggPSBkYXRlKSkgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBuZXdfY2FzZXNfc21vb3RoZWRfcGVyX21pbGxpb24pLCBzaG93LmxlZ2VuZCA9IEZBTFNFKSArDQogIGdlb21fbGluZShhZXMoeSA9IHBlb3BsZV92YWNjaW5hdGVkX3Blcl9odW5kcmVkKjUwKSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJOZXcgQ2FzZXMgUGVyIE1pbGxpb24iLCBzZWMuYXhpcz1zZWNfYXhpcyh+Li81MCwgbmFtZSA9ICJQZW9wbGUgVmFjY2luYXRlZCBQZXIgSHVuZHJlZCIpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgbGFicyh0aXRsZSA9ICJOZXcgQ2FzZXMgUGVyIE1pbGxpb24gdnMuIFBlb3BsZSBWYWNjaW5hdGVkIFBlciBIdW5kcmVkIikNCg0KZGVhdGhzX3ZhY2NpbmF0aW9uc19wbG90IDwtIGdncGxvdCh1cywgYWVzKHggPSBkYXRlKSkgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBuZXdfZGVhdGhzX3Blcl9taWxsaW9uKSwgc2hvdy5sZWdlbmQgPSBGQUxTRSkgKw0KICBnZW9tX2xpbmUoYWVzKHkgPSBwZW9wbGVfZnVsbHlfdmFjY2luYXRlZF9wZXJfaHVuZHJlZC83KSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJOZXcgRGVhdGhzIFBlciBNaWxsaW9uIiwgc2VjLmF4aXM9c2VjX2F4aXMofi4qNywgbmFtZSA9ICJQZW9wbGUgVmFjY2luYXRlZCBQZXIgSHVuZHJlZCIpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgbGFicyh0aXRsZSA9ICJOZXcgRGVhdGhzIFBlciBNaWxsaW9uIHZzLiBQZW9wbGUgRnVsbHkgVmFjY2luYXRlZCBQZXIgSHVuZHJlZCIpDQoNCg0KdmFyaWFudHNfaG9zcGl0YWxpemF0aW9uc19wbG90IDwtIGdncGxvdCh1cywgYWVzKHggPSBkYXRlKSkgKyANCiAgZ2VvbV9hcmVhKGFlcyh5ID0gcGVyY19zZXF1ZW5jZXMsIGNvbG9yID0gdmFyaWFudCwgZmlsbCA9IHZhcmlhbnQpLCBzaG93LmxlZ2VuZCA9RkFMU0UsIGFscGhhID0gMC41LCBwb3NpdGlvbiA9ICJkb2RnZSIpICsgDQogIGdlb21fbGluZShhZXMoeSA9IHdlZWtseV9ob3NwX2FkbWlzc2lvbnNfcGVyX21pbGxpb24gLyA1KSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJQZXJjZW50IG9mIFNlcXVlbmNlcyIsIHNlYy5heGlzPXNlY19heGlzKH4uKjUsIG5hbWUgPSAiSG9zcGl0YWxpemF0aW9ucyBQZXIgTWlsbGlvbiIpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgbGFicyh0aXRsZSA9ICJQcm9wb3J0aW9uIG9mIENvdmlkIFZhcmlhbnRzIHZzIEhvc3BpdGFsaXphdGlvbnMgUGVyIE1pbGxpb24iKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMDA3MDEpLCB5PTc1LCBsYWJlbD0iQWxwaGEvT3RoZXIiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMTA5MDEpLCB5PTc1LCBsYWJlbD0iRGVsdGEiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMjAyMDEpLCB5PTc1LCBsYWJlbD0iT21pY3JvbiIpDQoNCnZhcmlhbnRzX3ZhY2NpbmF0aW9uc19wbG90IDwtIGdncGxvdCh1cywgYWVzKHggPSBkYXRlKSkgKyANCiAgZ2VvbV9hcmVhKGFlcyh5ID0gcGVyY19zZXF1ZW5jZXMsIGNvbG9yID0gdmFyaWFudCwgZmlsbCA9IHZhcmlhbnQpLCBzaG93LmxlZ2VuZCA9RkFMU0UsIGFscGhhID0gMC41LCBwb3NpdGlvbiA9ICJkb2RnZSIpICsgDQogIGdlb21fbGluZShhZXMoeSA9IHBlb3BsZV9mdWxseV92YWNjaW5hdGVkX3Blcl9odW5kcmVkKSkgKyANCiAgc2NhbGVfeV9jb250aW51b3VzKCJQZXJjZW50IG9mIFNlcXVlbmNlcyIsIHNlYy5heGlzPXNlY19heGlzKH4uLCBuYW1lID0gIlBlb3BsZSBWYWNjaW5hdGVkIFBlciBIdW5kcmVkIikpICsgDQogIHRoZW1lX21pbmltYWwoKSArIA0KICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgQ292aWQgVmFyaWFudHMgdnMgUGVvcGxlIEZ1bGx5IFZhY2NpbmF0ZWQiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMDA3MDEpLCB5PTc1LCBsYWJlbD0iQWxwaGEvT3RoZXIiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMTA5MDEpLCB5PTc1LCBsYWJlbD0iRGVsdGEiKSArDQogIGFubm90YXRlKGdlb209ImxhYmVsIiwgeD15bWQoMjAyMjAyMDEpLCB5PTc1LCBsYWJlbD0iT21pY3JvbiIpDQoNCnZhcmlhbnRzX3ZhY2NpbmF0aW9uc19wbG90DQpgYGANCg0KYGBge3J9DQp2YWNjaW5hdGlvbnNfcGxvdA0KYGBgDQoNCmBgYHtyfQ0KdmFyaWFudHNfY2FzZXNfcGxvdCA8LSBnZ3Bsb3QoZGF0YSA9IHVzLCBhZXMoeCA9IGRhdGUpKSArIA0KICBnZW9tX2FyZWEoYWVzKHkgPSBwZXJjX3NlcXVlbmNlcywgY29sb3IgPSB2YXJpYW50LCBmaWxsID0gdmFyaWFudCksIHNob3cubGVnZW5kID1GQUxTRSwgYWxwaGEgPSAwLjUsIHBvc2l0aW9uID0gImRvZGdlIikgKyANCiAgZ2VvbV9saW5lKGFlcyh5ID0gbmV3X2Nhc2VzX3Ntb290aGVkX3Blcl9taWxsaW9uIC8gNDApKSArIA0KICBzY2FsZV95X2NvbnRpbnVvdXMoIlBlcmNlbnQgb2YgU2VxdWVuY2VzIiwgc2VjLmF4aXM9c2VjX2F4aXMofi4qNDAsIG5hbWUgPSAiTmV3IENhc2VzIFBlciBNaWxsaW9uIikpICsgDQogIHRoZW1lX21pbmltYWwoKSArIA0KICBsYWJzKHRpdGxlID0gIlByb3BvcnRpb24gb2YgQ292aWQgVmFyaWFudHMgdnMgTmV3IENhc2VzIFBlciBNaWxsaW9uIikgKw0KICBhbm5vdGF0ZShnZW9tPSJsYWJlbCIsIHg9eW1kKDIwMjAwNzAxKSwgeT03NSwgbGFiZWw9IkFscGhhL090aGVyIikgKw0KICBhbm5vdGF0ZShnZW9tPSJsYWJlbCIsIHg9eW1kKDIwMjEwOTAxKSwgeT03NSwgbGFiZWw9IkRlbHRhIikgKw0KICBhbm5vdGF0ZShnZW9tPSJsYWJlbCIsIHg9eW1kKDIwMjIwMjAxKSwgeT03NSwgbGFiZWw9Ik9taWNyb24iKQ0KDQp2YXJpYW50c19jYXNlc19wbG90DQpgYGANCg0KYGBge3J9DQp2YXJpYW50c19ob3NwaXRhbGl6YXRpb25zX3Bsb3QNCmBgYA0KDQpgYGB7cn0NCnZhcmlhbnRzX2RlYXRoc19wbG90DQpgYGANCg0KDQojIFRpbWUgU2VyaWVzIEFuYWx5c2lzDQoNCmBgYHtyfQ0KdXMgJT4lIA0KICBwbG90X3RpbWVfc2VyaWVzKGRhdGUsIG5ld19jYXNlc19zbW9vdGhlZF9wZXJfbWlsbGlvbikNCmBgYA0KDQpgYGB7cn0NCnVzICU+JSANCiAgcGxvdF9hY2ZfZGlhZ25vc3RpY3MoZGF0ZSwgbmV3X2Nhc2VzX3Ntb290aGVkX3Blcl9taWxsaW9uLCAuc2hvd193aGl0ZV9ub2lzZV9iYXJzID0gVCkgDQpgYGANCg0KDQpgYGB7cn0NCmdpc2FpZF92YXJpYW50cyAlPiUgDQogIGZpbHRlcihDb3VudHJ5ID09ICJVU0EiLCB2YXJpYW50ICVpbiUgYygiVk9DIE9taWNyb24gR1JBIChCLjEuMS41MjkrQkEuKikgIiwgIlZPQyBEZWx0YSBHSyAoQi4xLjYxNy4yK0FZLiopICIsICJWT0MgQWxwaGEgR1JZIChCLjEuMS43K1EuKikgIikpICU+JSANCiAgcGxvdF90aW1lX3NlcmllcyhkYXRlLCBwZXJjX3NlcXVlbmNlcywgLmZhY2V0X3ZhcnM9dmFyaWFudCwgLmxlZ2VuZF9zaG93ID0gRkFMU0UpDQpgYGANCg0KYGBge3J9DQpnaXNhaWRfdmFyaWFudHMgJT4lIA0KICBmaWx0ZXIoQ291bnRyeSA9PSAiVVNBIiwgdmFyaWFudCAlaW4lIGMoIlZPQyBPbWljcm9uIEdSQSAoQi4xLjEuNTI5K0JBLiopICIsICJWT0MgRGVsdGEgR0sgKEIuMS42MTcuMitBWS4qKSAiLCAiVk9DIEFscGhhIEdSWSAoQi4xLjEuNytRLiopICIpKSAlPiUgDQogIGdyb3VwX2J5KHZhcmlhbnQpICU+JSANCiAgcGxvdF9hY2ZfZGlhZ25vc3RpY3MoZGF0ZSwgcGVyY19zZXF1ZW5jZXMsIC5zaG93X3doaXRlX25vaXNlX2JhcnMgPSBUKSANCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkoInNmIikNCmxpYnJhcnkoInJuYXR1cmFsZWFydGgiKQ0KbGlicmFyeSgicm5hdHVyYWxlYXJ0aGRhdGEiKQ0KDQp3b3JsZCA8LSBuZV9jb3VudHJpZXMoc2NhbGUgPSAibWVkaXVtIiwgcmV0dXJuY2xhc3MgPSAic2YiKQ0KY2xhc3Mod29ybGQpDQpgYGANCg0KYGBge3J9DQp1bmlxdWUoZ2lzYWlkJENvdW50cnkpDQpgYGANCg0KYGBge3J9DQp1bmlxdWUoY292aWQkbG9jYXRpb24pDQpgYGANCg0KDQpgYGB7cn0NCndvcmxkX3ZhcmlhbnRzIDwtIGdpc2FpZCAlPiUgDQogIGdyb3VwX2J5KENvdW50cnkpICU+JSANCiAgbXV0YXRlKENvdW50cnkgPSBjYXNlX3doZW4oDQogIENvdW50cnkgPT0gIlVTQSIgfiAiVW5pdGVkIFN0YXRlcyIsDQogIFRSVUUgfiBhcy5jaGFyYWN0ZXIoQ291bnRyeSkNCiAgKSkgJT4lIA0KICBzdW1tYXJpc2UobW9zdF9yZWNlbnRfZGF0ZSA9IGRhdGVbbigpXSwgDQogICAgICAgICAgICBwcmV2YWxlbnRfdmFyaWFudCA9IHZhcmlhbnRbZGF0ZSA9PSBkYXRlW24oKV0gJiBUeXBlID09ICJWYXJpYW50IiAmIHBlcmNfc2VxdWVuY2VzID09IG1heChwZXJjX3NlcXVlbmNlcyldKSAlPiUgDQogICAgICAgICAgICAjcHJldmFsZW50X2xpbmVhZ2UgPSB2YXJpYW50W2RhdGUgPT0gZGF0ZVtuKCldICYgVHlwZSA9PSAiTGluZWFnZSIgJiBwZXJjX3NlcXVlbmNlcyA9PSBtYXgocGVyY19zZXF1ZW5jZXMpXSkgJT4lIA0KICBhcnJhbmdlKGRlc2MobW9zdF9yZWNlbnRfZGF0ZSkpICU+JSANCiAgcmVuYW1lKGxvY2F0aW9uID0gQ291bnRyeSkNCg0Kd29ybGRfdmFyaWFudHMgPC0gbGVmdF9qb2luKHdvcmxkX3ZhcmlhbnRzLCBjb3ZpZFssIGMoImxvY2F0aW9uIiwgImlzb19jb2RlIildLCBieSA9ICJsb2NhdGlvbiIsIGFsbC54ID0gVFJVRSkgJT4lIA0KICByZW5hbWUoZ3VfYTMgPSBpc29fY29kZSkNCg0Kd29ybGRfdmFyaWFudHNfbWFwIDwtIGxlZnRfam9pbih3b3JsZCwgd29ybGRfdmFyaWFudHMsIGJ5ID0gImd1X2EzIiwgYWxsLnggPSBUUlVFKQ0KYGBgDQoNCmBgYHtyfQ0KcCA8LSBnZ3Bsb3QoZGF0YSA9IHdvcmxkX3ZhcmlhbnRzX21hcCksIGFlcyhmaWxsID0gcHJldmFsZW50X3ZhcmlhbnQpKSArIA0KICBnZW9tX3NmKHNob3cubGVnZW5kID0gRkFMU0UpICsgDQogIHhsYWIoIkxvbmdpdHVkZSIpICsgDQogIHlsYWIoIkxhdGl0dWRlIikgKyANCiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvciA9IGVsZW1lbnRfbGluZShjb2xvciA9IGdyYXkoLjUpLCBsaW5ldHlwZSA9ICJkYXNoZWQiLCBzaXplID0gMC41KSwgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gImFsaWNlYmx1ZSIpKSANCmBgYA0KDQpgYGB7cn0NCnANCmBgYA0KDQoNCg==